import 'package:casdon/modules/recipe/data/api/category_recipe_list_api.dart';
import 'package:casdon/modules/recipe/data/api/cook_model_api.dart';
import 'package:casdon/modules/recipe/data/api/cook_module_content_api.dart';
import 'package:casdon/modules/recipe/data/api/miffy_product_list_api.dart';
import 'package:casdon/modules/recipe/data/api/miffy_recipe_cloud_list_api.dart';
import 'package:casdon/modules/recipe/data/api/miffy_recipe_info_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_banner_list_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_collect_detail_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_detail_info_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_category_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_cloud_list_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_ecprotocol_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_favorite_list_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_module_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_module_content_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_product_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_search_list_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_today_api.dart';
import 'package:casdon/modules/recipe/data/api/recipe_user_info_api.dart';

abstract class RecipeRepository {
  // 生活圈banner轮播图，type = 1，
  Future<List<ResponseRecipeBannerListApi>?> getRecipeBannerList();

  // 获取菜谱分类， 用于菜谱精选中分类gridview
  Future<ResponseRecipeCategoryApi?> getRecipeCategory(
    int pageNum,
    int pageSize,
  );

  // 根据id获取菜谱分类
  Future<ResponseRecipeCategoryApi?> getRecipeCategoryWithId(
    String id,
    int pageNum,
    int pageSize,
  );
  // 获取菜谱模块列表
  Future<List<ResponseRecipeModuleApi>?> getRecipeModuleList();

  // 根据菜谱模块id 获取菜谱模块内容
  Future<ResponseRecipeModuleContentApi?> getRecipeModuleContent(
    RequestRecipeModuleContentApi request,
  );

  // 获取今日菜谱
  Future<ResponseRecipeTodayApi?> getRecipeTodayList(
    int pageNum,
    int pageSize,
    String orderby,
  );

  // 获取云菜谱，智能菜谱页面
  Future<ResponseRecipeCloudListApi?> getRecipeCloudList(
    String pid,
    int pageNum,
    int pageSize,
  );

  // 获取菜谱收藏列表
  Future<ResponseRecipeFavoriteListApi?> getRecipeFavoriteList(
    int pageNum,
    int pageSize,
    String orderByColumn,
    String isAsc,
  );

  // 取消菜谱收藏
  Future<int> delRecipeCollect(String menuId);

  // 添加菜谱收藏
  Future<int> putRecipeCollect(String menuId);


  // 获取用户点赞的菜谱列表
  Future<ResponseRecipeCloudListApi?> getRecipeLikeList(
    int pageNum,
    int pageSize,
    String orderByColumn,
    String isAsc,
  );

  // 取消菜谱点赞
  Future<int> delRecipeLike(String menuId);

  // 添加菜谱点赞
  Future<int> putRecipeLike(String menuId);

  // 新增用户菜谱浏览记录
  Future<int> putRecipeBrower(String menuId);

  // 获取菜谱 用户相关信息（该菜谱是否点赞，是否收藏等）
  Future<RecipeUserInfoApi?> getUserRecipeInfo(String menuId);

  // 下发智能菜谱
  Future<void> postDispatchRecipe(
    String menuId,
    String deviceId,
    String electronicControlProtocol,
  );

  // 电控协议
  Future<ResponseRecipeEcprotocolApi?> getRecipeEcProtocol(
    String recipeId,
    String pid,
  );

  // 查询菜谱关联的产品列表
  Future<List<RecipeProductApi>?> getRecipeProductListByRecipeId(
    String recipeId,
  );

  //获取用户浏览的菜谱
  Future<void> getRecipeUserBrowses(
    int pageNum,
    int pageSize,
    String orderByColumn,
    String isAsc,
  );

  // 获取菜谱详情
  Future<ResponseRecipeDetailApi?> getRecipeDetailInfo(String recipeId);

  // 获取原来miffy的产品列表（用来判断设备的智能菜谱应该走miffy接口还是ciot接口）
  Future<List<MiffyProduct>?> getRecipeMiffyProducts();

  // 获取菜谱集下的所有菜谱
  Future<ResponseRecipeCollectDetailApi?> getRecipeCollectDetailInfo(
    String recipeListInfoId,
    int pageNum,
    int pageSize,
  );

  // 获取烹饪课层模块
  Future<List<ResponseCookModelApi>?> getCookClassesModules();

  // 获取烹饪课程模块内容（事实上与获取菜谱模块内容 接口一样）
  Future<ResponseCookModuleContentApi?> getCookModuleContent(
    RequestCookModuleContentApi request,
  );

  // 获取菜谱列表（菜谱类别下的菜谱列表）
  Future<CategoryRecipeListApi?> getCategoryRecipeList(
    String id,
    int pageNum,
    int pageSize,
  );

  // 搜索菜谱列表，根据菜谱名
  Future<ResponseRecipeSearchListApi?> getRecipeMenuList(
    String name,
    int pageNum,
    int pageSize,
  );

  ////////////////// /  MIFF接口    //////////////////////////////////////////////////////////

  // 获取miffy设备 云菜谱列表
  Future<ResponseMiffyRecipeCloudListApi?> getMiffyRecipeCloudList(
    RequestMiffyRecipeCloudListApi request,
  );

  // 获取miffy云菜谱详情
  Future<ResponseMiffyRecipeInfoApi?> getMiffyRecipeInfo(String recipeId);
}
